
.PHONY:all
all:__image
export PLC_IMAGE_PATH = $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/$(FW_VERSION)
__image:__images_clean
	$(MAKE) __rootfs_prep
	$(MAKE) __rootfs_to_squashfs
	$(MAKE) __kernel_tag
	$(MAKE) __bin_target prefix=$(PID)_$(RELEASE)


ifeq ($(CFG_DOUBLE_BOOT),1)
export PTN_FILE=ptn-8M_dboot.conf 
else
export PTN_FILE=ptn-8M.conf 
endif
export PLC_IMAGE_PATH = $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/$(FW_VERSION)	

##################################################################################################
#
#	rootfs_strip
#
##################################################################################################
export STRIP_FILES = lib/lib*.so lib/lib*.so.* lib/libexec/xtables/lib*.so\
				sbin/* bin/* usr/lib/lib*.so usr/lib/lib*.so.*

__rootfs_strip:
	@cd $(INSTALL_ROOT_FOR_BOARD) && \
		for f in $(STRIP_FILES); do if test -f $$f; then $(TOOLPREFIX)strip $$f >/dev/null || true; fi; done && \
		rm -rf lib/*.a
	@cd $(INSTALL_ROOT_FOR_BOARD) && \
		if test "$(STRIP_EVERY_THING)" = "y"; then \
#			rm -f usr/bin/tdb; \
			$(TOOLPREFIX)strip usr/bin/* &>/dev/null||true; \
			$(TOOLPREFIX)strip usr/sbin/* &>/dev/null||true; \
		else \
			echo "strip skips '/usr/bin/'";\
			echo "strip skips '/usr/sbin/'";\
		fi;


##################################################################################################
#
#	collecting webpages
#
##################################################################################################


		
		
##################################################################################################
#
#	rootfs
#
##################################################################################################
__rootfs_prep:
	@echo 'prepare rootfs ...'
	@echo 'image: rm old rootfs image ...'
	@rm -Rf $(INSTALL_ROOT_FOR_BOARD)
	
	@echo 'image: collecting webpages ...'
	@rm -Rf $(INSTALL_ROOT)/web/*
	
	@echo 'image: collecting rootfs templete ...'
	@cp -Rf $(INSTALL_ROOT) $(INSTALL_ROOT_FOR_BOARD)
	
	@chmod 777 $(INSTALL_ROOT_FOR_BOARD) -R
	
	@echo 'image: rm .svn files ...'
	@find $(INSTALL_ROOT_FOR_BOARD) -name ".svn" | xargs rm -rf
	
	@echo 'image: strip [bin|lib|kmod] ...'
	@$(MAKE) __rootfs_strip

ifeq ($(ENABLE_FACTORY_TEST_MODE), 1)
	@echo 'Factory test mode, backup default-config.bin to /etc/default-config.bin.'
	@$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-config.json default-release-config.bin
	cp $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-release-config.bin $(INSTALL_ROOT_FOR_BOARD)/etc/default-config.bin
	#Ϊ˿ͨtddpӿDUTΪģʽҪһģʽļ
	@echo 'Factory test mode, backup factory-config.bin to /etc/factory-config.bin'
	@$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-factory-config.json factory-config.bin
	cp $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/factory-config.bin $(INSTALL_ROOT_FOR_BOARD)/etc/factory-config.bin
	#ɾʱļ
	rm $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-release-config.bin
	rm $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/factory-config.bin
endif

ifneq ($(TP_MIDDLEWARE_TARGET), none)
	#м4⴦1.ֹbr0ra0eth2֮ת2.ϿPLCswitchphyڣ3.wifi14.ˮӡ
	#Ϊдproduct-info.binмҪtargetproduct-info.binмУʱˢflashеproduct-info.
	cd $(INSTALL_ROOT_FOR_BOARD)/etc/rc.d && \
	echo "insmod /lib/modules/$(KERNELVER)/kernel/tp_middleware.ko" >> rcS && \
	echo "mii_mgr -s -p 1 -r 0 -v 3900" >> rcS
	cd $(INSTALL_ROOT_FOR_BOARD)/etc/wireless && \
	sed -i 's/MaxStaNum=16/MaxStaNum=1/' RT2860.dat
	cd $(INSTALL_ROOT_FOR_BOARD)/web/themes/green/css && \
	sed -i 's/div.function-container {/div.function-container {\r\nbackground:url(..\/img\/mark_copy.gif) repeat left center #ffffff;/' style.css
	cd $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE) && \
	cp product-info.bin product-info-ori.bin && \
	cp $(IMAGEPATH)/FlashMaker/$(PID)_$(TP_MIDDLEWARE_TARGET)/product-info.bin ./product-info.bin && \
	cp $(PTN_FILE) $(PTN_FILE).ori && \
	sed -i 's/product-info,0x007e1100,0x00001000, 0, 2, 2, 1,/product-info,0x007e1100,0x00001000, 0, 2, 2, 0,/' $(PTN_FILE)
endif

#Debug ˮӡ
ifeq ($(TP_DEBUG_SOFTWARE), 1)
ifeq ($(TP_MIDDLEWARE_TARGET), none)
	cd $(INSTALL_ROOT_FOR_BOARD)/web/themes/green/css && \
	sed -i 's/div.function-container {/div.function-container {\r\nbackground:url(..\/img\/mark_copy.gif) repeat left center #ffffff;/' style.css
endif
endif

__rootfs_to_squashfs:
	$(FAKEROOT) $(RPT_TOPDIR)/util/buildFS_LZ
	@ls -l $(IMAGEPATH)/$(BOARD_TYPE)-squashfs

##################################################################################################
#
#	__kernel_tag target
#
##################################################################################################	
__kernel_tag:
	$(FAKEROOT) $(RPT_TOPDIR)/util/make_flash_src/make_flash -k vmlinux.bin.gz -o tp.vmlinux.bin.gz


##################################################################################################
#
#	*.bin target
#
##################################################################################################
__bin_target:
#ifeq ($(ENABLE_FACTORY_TEST_MODE), 1)
#	@echo 'json2bin default-factory-config.json to default-config.bin'
#	@$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-factory-config.json default-config.bin
#	$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/profile.json profile.bin -r $(RELEASE)
#else
#	@$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-config.json default-config.bin
#	$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/profile.json profile.bin -r $(RELEASE)
#endif
	@cd $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE) && rm -rf default-nvm.nvm && \
		find $(PLC_IMAGE_PATH)  -name "*.nvm" | xargs ls -t | head -n 1 | xargs -I {} ln -s {} default-nvm.nvm
		
	@cd $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE) && rm -rf default-pib.pib && \
		find $(PLC_IMAGE_PATH)  -name "*.pib" | xargs ls -t | head -n 1 | xargs -I {} ln -s {} default-pib.pib	
	@echo 'building *_[flash|up].bin ...'
ifeq ($(ENABLE_FACTORY_TEST_MODE), 1)
	@echo 'json2bin default-factory-config.json to default-config.bin'
	@$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-factory-config.json default-config.bin
	$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/profile.json profile.bin -r $(RELEASE)
	#ȴģʽļflash.binļͬʱҲģʽļup.binļ
	@echo 'building *_[flash|up].bin with factory mode!'
	@cd $(IMAGEPATH)/ && \
	$(FAKEROOT) $(IMAGEPATH)/make_flash -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/$(PTN_FILE) -o $(prefix)_factory_mode -d -s $(FW_VERSION)
	@echo 'building *_[flash|up].bin with factory mode finished.'
	#Ȼļbinļ
	@echo 'building *_[flash|up].bin ...'
	rm $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-config.bin
	@$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-config.json default-config.bin
	@cd $(IMAGEPATH)/ && \
	$(FAKEROOT) $(IMAGEPATH)/make_flash -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/$(PTN_FILE) -o $(prefix) -d -s $(FW_VERSION)
	@echo 'building *_[flash|up].bin finished.'
	#ֻģʽļflash.binļʹļup.binļ
	@echo 'delete the redundance bin files.'
	@cd $(IMAGEPATH)/ && \
	find . -name "$(prefix)_factory_mode-up*" | xargs rm -rf && \
	find . -name "$(prefix)-flash*" | xargs rm -rf
else
	@$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/default-config.json default-config.bin
	$(FAKEROOT) $(IMAGEPATH)/json2bin -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/ $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/profile.json profile.bin -r $(RELEASE)
	@cd $(IMAGEPATH)/ && \
	$(FAKEROOT) $(IMAGEPATH)/make_flash -p $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE)/$(PTN_FILE) \
							-o $(prefix) -d	-s $(FW_VERSION)
endif
				

#޸мļ
ifneq ($(TP_MIDDLEWARE_TARGET), none)
	@cd $(IMAGEPATH)/ && \
	chmod 777 rename.sh && \
	$(IMAGEPATH)/rename.sh $(PID)_$(RELEASE) [$(RELEASE)2$(TP_MIDDLEWARE_TARGET)]
	cd $(IMAGEPATH)/FlashMaker/$(PID)_$(RELEASE) && \
	mv product-info-ori.bin product-info.bin && \
	mv $(PTN_FILE).ori $(PTN_FILE) 	
endif

#޸debugļ
ifeq ($(TP_DEBUG_SOFTWARE), 1)
ifeq ($(TP_MIDDLEWARE_TARGET), none)
	@cd $(IMAGEPATH)/ && \
	chmod 777 rename.sh && \
	$(IMAGEPATH)/rename.sh $(PID)_$(RELEASE) tp-debug
endif
endif

__images_clean:
	find $(IMAGEPATH) -name "*.bin" | grep "flash-ver" | xargs rm -f
	find $(IMAGEPATH) -name "*.bin" | grep "up-ver" | xargs rm -f
	find $(IMAGEPATH) -name "default-nvm.nvm" | grep "up-ver" | xargs rm -f
	find $(IMAGEPATH) -name "default-pib.pib" | grep "up-ver" | xargs rm -f
	rm -f make_flash_time.tmp
	